import { defineStore } from 'pinia'

/**
 * 用户信息存储
 * @returns {Object} 用户状态和操作
 */
export const useUserStore = defineStore('user', {
  state: () => ({
    userInfo: null,
    token: localStorage.getItem('token') || '',
    roles: []
  }),
  
  getters: {
    /**
     * 判断用户是否已登录
     * @returns {Boolean} 登录状态
     */
    isLoggedIn: (state) => !!state.token,
    
    /**
     * 获取用户角色
     * @returns {Array} 用户角色列表
     */
    getUserRoles: (state) => state.roles
  },
  
  actions: {
    /**
     * 设置登录令牌
     * @param {String} token - 登录令牌
     */
    setToken(token) {
      this.token = token
      localStorage.setItem('token', token)
    },
    
    /**
     * 设置用户信息
     * @param {Object} userInfo - 用户信息对象
     */
    setUserInfo(userInfo) {
      this.userInfo = userInfo
    },
    
    /**
     * 设置用户角色
     * @param {Array} roles - 角色列表
     */
    setRoles(roles) {
      this.roles = roles
    },
    
    /**
     * 清除用户信息，用于登出操作
     */
    logout() {
      this.token = ''
      this.userInfo = null
      this.roles = []
      localStorage.removeItem('token')
    }
  }
}) 